Seq2Seq模型 |
您所在的位置:网站首页 › in the end与at the end的区别 › Seq2Seq模型 |
一、seq2seq模型
1.1 seq2seq的目标
输入和输出均为文本,可用于机器翻译、文本摘要的领域两个文本同时做为输入,进行分类、结构化预测的输出,可用于机器阅读理解问题
1.2 端到端结构 End to End
end to end:已知input和output,去学习input到output 的映射关系,也就是求对应法则f的过程。 Using neural models,hand-crafted features can be replaced by Dense Representation. A pipeline approach with sub-system can be replaced by a simple end-to-end system. 传统NLP文本任务流程,也就是pipeline approach neural models,也就是end-to-end的NLP文本任务流程 接下来以机器翻译任务为例,简单阐述两个模型的区别 不仅仅可以用于机器翻译,其他NLP任务也可以借助seq2seq的力量 机器翻译:原文本转为目标文本文本总结:长文本转为短文本对话回复生成:上一个对话转为下一个对话原本是判别结构的任务也可以转化为seq2seq的方式 句法分析可以转化为句法序列树情感分析可以转化为类别转化为句子的表达 1.4 结构基于LSTM的seq2seq参考资料 h j → e n c = L S T M ( h j − 1 → e n c , e m b ( x j ) ) h j ← e n c = L S T M ( h j + 1 ← e n c , e m b ( x j ) ) h e n c = [ h n → e n c , h 1 ← e n c ] \begin{aligned} \overrightarrow{h_j}^{enc}&=LSTM(\overrightarrow {h_{j-1}}^{enc},emb(x_j))\\ \overleftarrow{h_j}^{enc}&=LSTM(\overleftarrow{h_{j+1}}^{enc},emb(x_j))\\ h_{enc}&=[\overrightarrow{h_n}^{enc},\overleftarrow{h_1}^{enc}] \end{aligned} hj enchj enchenc=LSTM(hj−1 enc,emb(xj))=LSTM(hj+1 enc,emb(xj))=[hn enc,h1 enc] 正向LSTM层:最终输出结果应为 h n + 1 ← e n c \overleftarrow{h_{n+1}}^{enc} hn+1 enc逆向LSTM层:最终输出结果应为 h 0 → e n c \overrightarrow {h_0}^{enc} h0 enc采用双层LSTM模型,将输入序列传入双向LSTM的输入,并由双层LSTM的hidden state在同一时刻的输入进行拼接后共同进行输出。兼顾了超长文本的信息利用,兼顾了上下文的语义信息。标准文本判别任务中Encoder使用 在输入文本开头和结尾分别加上标志,start sign和end sign分别使用两个初始化隐状态向量 全零向量随机向量基于输入文本的word embedding加权平均向量 2.1.2 隐状态输出双向LSTM中,每层的输出经过归一化之后,输出各种可能结果的概率分布。 Encoder的隐状态输出作为Decoder隐状态的输入 h i d e c = L S T M _ S T E P ( h i − 1 d e c , e m b ′ ( y i − 1 ) ) 其中 e m b ′ ( y i − 1 ) 指的是上一 S T E P 输出的 e m b e d d i n g 向量 \begin{aligned}h_i^{dec}=LSTM\_STEP\big(h_{i-1}^{dec},emb'(y_{i-1})\big)\\ 其中emb'(y_{i-1})指的是上一STEP输出的embedding向量 \end{aligned} hidec=LSTM_STEP(hi−1dec,emb′(yi−1))其中emb′(yi−1)指的是上一STEP输出的embedding向量 双向LSTM每一个方向均使用不同的字典,embedding方式也存在一定区别。现在以普通LSTM为例,预测第i个文本 y i y_i yi : 当前 S T E P 隐状态输出 o i = W h i d e c + b 当前 S T E P 输出的概率分布 p i = s o f t m a x ( o i ) p 1 ∈ R ∣ V ∣ 第 i 个词输出的概率 P ( y i ∣ X 1 : n ) = p i [ y i ] \begin{aligned} &当前STEP隐状态输出\quad o_i=Wh_i^{dec}+b \\ &当前STEP输出的概率分布\quad p_i=softmax(o_i)\qquad p_1\in R^{|V|}\\ &第i个词输出的概率\quad P(y_i|X_{1:n})=p_i[y_i] \end{aligned} 当前STEP隐状态输出oi=Whidec+b当前STEP输出的概率分布pi=softmax(oi)p1∈R∣V∣第i个词输出的概率P(yi∣X1:n)=pi[yi] 输出过程可以使用Greedy Search,BeamSearch,Top-K,Top-P输出结束的标志是End sign为了确保不会无限制输出,可以增加超参数Max length,防止模型一直不输出End Sign 2.2 Decoder双向LSTM的seq2seq模型结构 单向LSTM的seq2seq模型结构 Encoder层的输出语义向量c包含了输入序列X全部的语义信息,作为Decoder层的输入 可以作为初始化参数参与运算,也可以作为Decoder层每一个STEP的输入参与计算。 损失函数 L = − ∑ k = 1 N ∑ j = 1 m k l g ( P ( y i k ∣ X k , Y 1 : i − 1 k ) ) L=-\sum^N_{k=1}\sum^{m_k}_{j=1}lg\bigg(P\big(y^k_i|X^k,Y^k_{1:i-1}\big)\bigg) L=−k=1∑Nj=1∑mklg(P(yik∣Xk,Y1:i−1k))模型遇到字典中尚未出现的词时 在Encoder层可以使用OOV进行表达(out of vocabulary)可以使用UNK代表所有OOV在输出字典中的表达训练时可以将低频词汇主动替换成UNK,训练得到一个UNK的word embedding测试时就可以使用UNK代替这个词实际使用中,可以强制要求模型不输出UNK也可以允许输出,但是增加post-processing过程,将其替换成合理的词汇。可以使用上下文去预测,找最大可能的结果进行替换输出。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |